<?php namespace Zmsun\Util;class UnitConv{const BYTE_STR_B=0;const BYTE_STR_K=1;const BYTE_STR_M=2;const BYTE_STR_G=3;public static function byteStr($bytes,$bytesUnit=null,int$precision=null,$abbr=null,$zeroFill=null):string{switch($bytesUnit){case self::BYTE_STR_K:$a=1024;break;case self::BYTE_STR_M:$a=1048576;break;case self::BYTE_STR_G:$a=1073741824;break;default:$a=1;break;}$bytes*=$a;$symbols=$abbr ? array('B','K','M','G','T','P','E','Z','Y'):array('B','KB','MB','GB','TB','PB','EB','ZB','YB');$exp=$bytes ? floor(log($bytes)/log(1024)):0;if(is_null($precision))$precision=2;return$zeroFill ? sprintf('%.'.$precision.'f%s',$bytes/1024 **$exp,$symbols[$exp]):round($bytes/1024 **$exp,$precision).$symbols[$exp];}}?>